const fs = require('fs');
const path = require('path');

// 目标目录
const tablesDir = path.join(__dirname, 'data', 'tables');

// 需要替换的键名映射
const keyMappings = {
  '英文字段': 'englishField',
  '中文字段': 'chineseName',
  '英文名称': 'englishField',
  '中文名称': 'chineseName'
};

// 递归处理所有JSON文件
function processJsonFiles(dir) {
  fs.readdirSync(dir).forEach(file => {
    const fullPath = path.join(dir, file);
    const stat = fs.statSync(fullPath);

    if (stat.isDirectory()) {
      processJsonFiles(fullPath);
    } else if (file.endsWith('.json')) {
      try {
        // 读取文件内容
        const content = fs.readFileSync(fullPath, 'utf8');
        const data = JSON.parse(content);

        // 转换键名的函数
        function transformKeys(obj) {
          if (Array.isArray(obj)) {
            return obj.map(item => transformKeys(item));
          } else if (obj !== null && typeof obj === 'object') {
            return Object.keys(obj).reduce((acc, key) => {
              const newKey = keyMappings[key] || key;
              acc[newKey] = transformKeys(obj[key]);
              return acc;
            }, {});
          }
          return obj;
        }

        // 转换数据
        const transformedData = transformKeys(data);

        // 写回文件，美化格式
        fs.writeFileSync(
          fullPath,
          JSON.stringify(transformedData, null, 2),
          'utf8'
        );
        console.log(`已转换: ${fullPath}`);
      } catch (error) {
        console.error(`处理文件出错 ${fullPath}:`, error.message);
      }
    }
  });
}

// 执行转换
console.log('开始转换JSON文件键名...');
processJsonFiles(tablesDir);
console.log('转换完成！');